<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<script>
    // Promise的拓展方法
    // then()
    // catch()
    // finally()

    // 用法 Promise实例.then()


    debugger;
    var p = new Promise(function (resolve, reject) {
        // 回调函数(同步任务) -> 容器 -> 存放需要执行的异步操作(同步也可以)
        console.log("代码开始:1");
        // 异步代码: 未来改变状态
        setTimeout(function () {
            debugger;
            console.log("异步开始:1");
            // resolve(1);  //  {fulfilled:1} 
            reject(2);  // {rejected:2}
            console.log("异步:", p);
        }, 2000);
        console.log("代码结束:3");
    });
    console.log("同步:", p);  // {pending:undefined}


    // p.then(callback1,callback2)  => then()可以接收两个回调函数,返回一个新的Promise对象(可以使用链式操作)
    // callback1  当Promise实例由pending(进行中)改为fulfilled(已成功) 执行此回调函数
    // callback2  当Promise实例由pending(进行中)改为rejected(已失败) 执行此回调函数

    // 可以理解为: then()在页面加载时(同步任务),提前指定了状态改变之后要执行的内容 => 等异步任务结束之后,再执行对应的回调函数

    // 注意: callback1 callback2 都有一个形式参数,用于接收 Promise实例存储的结果


    // 优点: => 可以将异步操作变得更像同步
    p.then(function (res) {
        console.log("fulfilled", res);
    }, function (res) {
        console.log("rejected", res);
    })







</script>

</html>